package com.arron.algorithm.leetcodetop100.哈希;

import java.util.*;

/**
 * 给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
 *
 * 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
 *
 *
 */
public class AnagramGrouping {

    public static List<List<String>> groupAnagrams(String[] strs) {


        Map<String,List<String>> res =  new HashMap<>();

        for (String str : strs) {
            char[] chars = str.toCharArray();

            Arrays.sort(chars);

            String key = String.valueOf(chars);

            if (!res.containsKey(key)){
                List<String> strings = new ArrayList<>();
                strings.add(str);
                res.put(key,strings);
            }else {
                res.get(key).add(str);
            }

        }


        return new ArrayList<>(res.values());
    }

    public static void main(String[] args) {

        String strs[] = {"eat", "tea", "tan", "ate", "nat", "bat"};

        System.out.println(groupAnagrams(strs));

    }

}


